

#include "Evaluacion.h"


Evaluacion::Evaluacion()
{
	
}


void Evaluacion::IniciarEvaluacion()
{
	//Incializando el tiempo
	objControlTimer.InicializarTimer();

	//Asignando el nombre del Informe Generado
	charFilename = "InformeSimualdorQuirurgico.txt";
}


void Evaluacion::FinalizarEvaluacion()
{
	//Calculando el tiempo
	objControlTimer.CalcularTimerEvaluacion();
	dblTiempo = objControlTimer.getElapSeconds();

	if(enmTipoSesion == TRANSPORTAR_CUBOS)
	{
		double dblDistanciaTemp = 0.0;

		//Calculando Distancias
		for(int i=0;i<intNroCubos;i++)
		{
			dblDistanciaTemp = CalcularDistancia(vUbicacionObjetos[i],objUbicacionObjetivo);
			vDistanciaObjetos.push_back(dblDistanciaTemp);
		}
	}
	else if(enmTipoSesion == ORDENAR_CUBOS)
	{
		double dblDistanciaTemp = 0.0;

		//Calculando Distancias
		for(int i=0;i<intNroCubos;i++)
		{
			dblDistanciaTemp = CalcularDistancia(vUbicacionObjetos[i],vUbicacionObjetivos[i]);
			vDistanciaObjetos.push_back(dblDistanciaTemp);
		}
	}

	GenerarReporte();
}

void Evaluacion::GenerarReporte()
{
	//-------Generando el Informe en Pantalla-----------

	cout << endl;
	cout << "INFORME DE DESTREZAS DEL SIMULADOR QUIRURGICO" << endl;
	cout << "Universidad EAFIT-Universidad CES" << endl;
	cout << endl;

	if(enmTipoSesion == TRANSPORTAR_CUBOS)
	{
		cout << "Tipo Sesion " << "TRANSPORTAR CUBOS" << endl;
	}
	else if(enmTipoSesion == ORDENAR_CUBOS)
	{
		cout << "Tipo Sesion: " << "ORDENAR CUBOS" << endl;
	}
	else if(enmTipoSesion == SIMULACION_HIGADO)
	{
		cout << "Tipo Sesion: " << "SIMULACION HIGADO" << endl;
	}

	cout << endl;
	cout << "Tiempo: " << dblTiempo << endl;
	cout << endl;
	cout << "Distancias: " << endl;

	for(int i=0;i<intNroCubos;i++)
	{

		cout << "Objeto " << i << ": " << vDistanciaObjetos[i] << endl;
	}
	

	//--------Generando el Informe en el  archivo---------

	//Declarando variables necesarias
	char charTiempo[10];
	char charDistancias[10];
	float fDistancia = 0.0;

	//creando el objeto de salida asociado al archivo
	ofstream fout(charFilename);

	//Convirtiendo el tiempo de double a char
	sprintf(charTiempo, "%G",dblTiempo);

	fout << "INFORME DE DESTREZAS DEL SIMULADOR QUIRURGICO" << endl;
	fout << "Universidad EAFIT-Universidad CES" << endl;
	fout << endl;

	if(enmTipoSesion == TRANSPORTAR_CUBOS)
	{
		fout << "Tipo Sesion " << "TRANSPORTAR CUBOS" << endl;
	}
	else if(enmTipoSesion == ORDENAR_CUBOS)
	{
		fout << "Tipo Sesion: " << "ORDENAR CUBOS" << endl;
	}
	else if(enmTipoSesion == SIMULACION_HIGADO)
	{
		fout << "Tipo Sesion: " << "SIMULACION HIGADO" << endl;
	}

	fout << endl;
	fout << "Tiempo de duracion de la prueba: " << charTiempo << endl; 
	fout << endl;
	fout << "Distancias: " << endl;

	
	for(int i=0;i<intNroCubos;i++)
	{
		fDistancia = vDistanciaObjetos[i];
		sprintf(charDistancias,"%G",fDistancia);
		fout << "Objeto " << i << ": " << charDistancias << endl;
	}
	

	fout.close();
}